Many graphics or image processing computer programs, such as Adobe® Photoshop®, available from Adobe Systems Incorporated, of San Jose, Calif., build a final image by compositing two or more image layers together. The image layers may be thought of as stacked sheets of acetate. The density of the ink on the acetate controls the transparency of the sheet, e.g., the extent to which that sheet obscures the images from the underlying sheets. In a computer program, the color and density of the ink on the acetate sheet are represented by a color value and an alpha value (representing opacity), respectively. Normally, an alpha value of zero means the corresponding region is fully transparent, and a value of one means it is fully opaque.
Each layer typically includes image data and compositing controls. Typically, the image data is represented by an array of pixels, with each pixel having a color and, optionally, an opacity. Similarly, if there is a mask, the mask is represented by an array of pixels, with each pixel having an opacity. Alternatively, the image data or the mask or both can be defined analytically, e.g., by using shape outlines, or by other functions which map positions to color and opacity. In addition, the image data and the mask can be dynamic, that is, computed from other data at the time the layers are composited.
The compositing controls may include a transfer mode, also known as a blending mode. The transfer mode of an image layer determines how the color in the image layer mixes with the color accumulated from the underlying layers in the same image position. More specifically, it is a recipe for blending colors that can be expressed as a function taking an upper color and lower color to produce a third color. Image manipulation computer programs, such as Photoshop®, generally provide a wide variety of predefined transfer modes. The basic transfer mode equation is:new_color=α·T(lower_color,upper_color)+(1−α)·lower colorwhere α is the opacity of the upper layer, T is the selected transfer mode function, and lower_color and upper_color are the color values of the lower layer (which in some contexts is called the accumulation layer) and the upper layer for the graphical element whose color (new_color) is being calculated. The color values are not pre-multiplied by the opacity. Transfer modes should not be confused with the well-known Porter-Duff compositing operations, which define how the alpha values determine how much of the blended colors survive in the result, but which assume generally normal mode color mixing. (T. Porter and T. Duff, “Compositing Digital Images”, SIGGRAPH 84, pp. 253-59 (1984).)
In this specification, the terms “color,” “alpha,” and “graphic element” are used. A color is a representation of a particular color. The representation can be in any form suitable for computation and need only have the property that colors can be interpolated. Alpha is a quantity that characterizes the opacity of a graphic element. An alpha value of zero indicates total transparency. An alpha value of one indicates complete opacity. When working with graphic elements described with a color and alpha value, the color is free to be undefined or arbitrary if the alpha value is zero. A graphic element is a piece of the compositing process. Two graphic elements each having a color and alpha value are composited to produce a third graphic element. In a raster context, the primitive graphic element is a pixel. In a vector graphics context, it could be a region of solid color, such as a region defined by a PostScript path.
Additional information, and example techniques for blending graphic elements, is discussed in commonly owned U.S. Pat. Nos. 6,421,460 and 7,184,055, which are hereby incorporated by reference herein in their entirety.